import axios from "axios";
import qs from "qs";
const instance = axios.create(); // 创建axios实例

// 封装请求拦截器,发请求之前,携带token一起发送
// 每次使用instance对象发送请求时,都会先执行这个请求拦截器
// 中定义的箭头函数，config=》{...}
// config对象用于封装请求数据包，可以把token字符串绑定到
// config对象的请求消息头中，即可在每一个请求中携带token消息头
import store from "../store/index";
instance.interceptors.request.use(config => {
  let token = store.state.token; // 从vuex中获取token
  if (token) {
    // 把token 绑定到消息头上,一起发送
    config.headers.authorization = token;
  }
  return config;
});

const myaxios = {
  // 该方法用于发送get请求
  // url:请求资源路径
  // params:请求参数(Object形式)
  get(url, params) {
    return instance({
      url, // 属性名属性值 一样的话   可以省略   url:url
      method: "get",
      params,
    });
  },
  // 用于发送post请求
  // url:请求资源路径
  // params:请求参数(Object形式)
  post(url, params) {
    return instance({
      url,
      method: "post",
      data: qs.stringify(params),
    });
  },
};

export default myaxios;